Walking Machines

ABSTRACT

There are provided systems and methods of optimizing walking machines. The system including a memory storing a software application and a processor configured to execute the software application to receive a character from a user, the character having walking mechanisms, determine optimal design parameters for the character based on the walking mechanisms, and alter the walking mechanisms of the character based on the optimal design parameters to generate altered walking mechanisms, wherein the optimal design parameters are for use by the character to walk using the altered walking mechanisms. Generating the altered walking mechanisms may include at least one of changing locations for joints on the walking mechanisms, changing the dimensions of the walking mechanisms, and changing motion timings for the walking mechanisms.

BACKGROUND

With the advancement of technology, mechanical characters and toys are currently capable of a vast array of movements. For example, a variety of mass-produced toys are now capable of walking on their own without any user interaction. However, while there currently exists this variety of mass-produced toys that are capable of walking, designing such toys remains a difficult and laborious task that requires significant engineering expertise. As such, ordinary users that want to design and build these toys are not able to do so.

SUMMARY

The present disclosure is directed to optimizing walking machines, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 presents a system for optimizing walking machines, according to one implementation of the present disclosure.

FIG. 2 presents an example of a user interface used to design walking machines, according to one implementation of the present disclosure.

FIG. 3 presents an example of altering the parameters of a walking machine, according to one implementation of the present disclosure.

FIG. 4 shows a flowchart illustrating a method for optimizing walking machines, according to one implementation of the present disclosure.

DETAILED DESCRIPTION

The following description contains specific information pertaining to implementations in the present disclosure. The drawings in the present application and their accompanying detailed description are directed to merely exemplary implementations. Unless noted otherwise, like or corresponding elements among the figures may be indicated by like or corresponding reference numerals. Moreover, the drawings and illustrations in the present application are generally not to scale, and are not intended to correspond to actual relative dimensions.

FIG. 1 presents a system for optimizing walking machines, according to one implementation of the present disclosure. System 100 of FIG. 1 includes user device 110 and user 150. User device 110 includes processor 111, display 112, speakers 113, memory 114, and input interface 115. Memory 114 includes machine software application 120, which includes user interface 121, simulation 124, optimization 126, and character assembly 136. User interface 121 includes mechanisms 122 and character design 123. Simulation 124 includes constraints 125, which includes joint constraints 139, motor constraints 140, and frictional constraints 141. Optimization 126 includes methods 127, parameters 131, and optimized character design 135. Methods 127 include Stochastic approach 128, gradient-based approach 129, and hybrid approach 130. Parameters 131 include joints 132, dimensions 133, and timing 134. Character assembly 136 includes assembly operations 137 and assembly instructions 138. User 150 includes user input 151.

User device 110 may comprise a personal computer, a server, a mobile phone, a tablet, or any other device capable of executing machine software application 120 in memory 114. As shown in FIG. 1, user device 110 includes display 112 and input interface 115. Input interface 115 may comprise, for example, a keyboard, a mouse, a game controller, a touch-screen input, a thermal and/or electrical sensor, or any other device capable of accepting user input 151 for use with user device 110. Display 112 may comprise a liquid crystal display (LCD) screen built into user device 110. In alternative implementations of the present disclosure, display 112 may be another type of display hardware, such as cathode-ray tubes (CRT) monitors. In yet other implementations, display 112 may also be touch sensitive and may serve as input interface 115.

User device 110 further includes processor 111 and memory 114. Processor 111 may be configured to access memory 114 to store received input or to execute commands, processes, or programs stored in memory 114, such as machine software application 120. Processor 111 may correspond to a processing device, such as a microprocessor or similar hardware processing device, or a plurality of hardware devices. However, in other implementations processor 111 refers to a general processor capable of performing the functions required of user device 110. Memory 114 is a sufficient memory capable of storing commands, processes, and programs for execution by processor 111. Memory 114 may be instituted as ROM, RAM, flash memory, or any sufficient memory capable of storing a set of commands. In other implementations, memory 114 may correspond to a plurality memory types or modules.

As illustrated in FIG. 1, user device 110 includes machine software application 120. User 150 of user device 110 may utilize machine software application 120 to design machines or toys that are capable of walking in a stable manner. Machine software application 120 allows user 150 to design walking machines by first providing user 150 with user interface 121, where user interface 121 allows user 150 to build character design 123 using mechanisms 122.

Character design 123 may include an initial design built by user 150 for a walking machine or toy. To build character design 123, user 150 selects mechanisms 122 to add to character design 123. Mechanisms 122 may include, but are not limited to, mechanical assemblies, gears, linkages, and geometric shapes that connect together to build character design 123. For example, user 150 may be utilizing machine software application 120 to design a toy dog that is capable of walking in a stable manner. In such an example, user 150 may select the head, body, tail, and legs for the toy dog from mechanisms 122. Furthermore, user 150 may also select gears and linkages (such as joints) from mechanisms 122, where gears and linkages are used to hold the parts of the toy dog together so that the toy dog is able to walk in a stable manner.

Also illustrated in FIG. 1, machine software application 120 includes simulation 124. As will be discussed below, machine software application 120 automatically optimizes parameters 131 for character design 123 so that character design 123 is able to walk in a stable manner. When optimizing character design 123, machine software application 120 utilizes simulation 124 to measure the quality of the walking motion for character design 123 using various parameters 131. For example, and using the example above where user 150 is using machine software application 120 to design a toy dog as character design 123, after user 150 has designed the toy dog, machine software application 120 determines and applies different parameters 131 to the toy dog and simulates a walking motion of the toy dog using the different parameters 131 as simulation 124.

Also illustrated in FIG. 1, simulation 124 includes constraints 125. When simulating character design 123 using simulation 124, machine software application 120 models joints, virtual motors, and frictional contacts using different constraints 125, such as joint constraints 139, motor constraints 140, and frictional constraints 141. Joints that allow a pair of rigid body components to rotate relative to each other about a pre-specified axis include two sets of joint constraints 139. First, joints include a vector-valued constraint that ensures that each joint on character design 123 coincides in a world space. Second, joints include a second vector-valued constraint that ensures the two rigid bodies connected by each joint rotate relative to each other only about the pre-specified axis.

Motor constraints 140 are used to mimic the effect of physical actuators (or motors) used in the motion of character design 123. For example, it may be assumed that each limb of character design 123 has an input crank that operates relative to the main body of character design 123. Since joints already employ joint constraints 139 between each limb and the main body, motor constraints 140 directly measure the difference between their relative orientation and a target motor angle, where the target motor angles are specified by phase profile functions.

Contacts are used by character design 123 to move around simulated environments, where each contact for character design includes three frictional constraints 141. The first constraint for frictional constraints 141 specifies that a penetration distance, measured along a contact normal, should be equal to zero. The second constraint for frictional constraints 141 specifies frictional forces acting in a tangential direction from the contact normal, where a pyramid approximation to a friction cone is used to model the frictional forces. Finally, the third constraint for frictional constraints 141 includes inequality constraints for the magnitude of the tangential forces, which ensure that the tangential forces remain within the friction pyramid.

Also illustrated in FIG. 1, machine software application 120 includes optimization 126. As discussed above, machine software application 120 automatically optimizes parameters 131 for character design 123 so that character design 123 is able to walk in a stable manner. As such, machine software application 120 utilizes optimization 126 to both determine different parameters 131 that can be applied to character design 123 so that character design 123 can walk in a stable manner, and to generate optimized character design 135, where optimized character design 135 corresponds to character design 123 which as been altered using optimal parameters from the different parameters 131. The optimal parameters used to alter character design 123 when generating optimized character design 135 correspond to the parameters that give character design 123 the best quality walking motion, such that character design 123 is able to walk using an upright, smooth, and stable motion.

For example, and using the example above where user 150 is using machine software application 120 to design a toy dog as character design 123, machine software application 120 may utilize optimization 126 to determine different parameters 131 that can be utilized to alter the toy dog so that the toy dog can walk in a stable manner. Machine software application 120 may then utilize simulation 124 to measure the quality of the walking motion for the toy dog when each of the different parameters 131 is applied to the toy dog. After measuring the quality of the walking motions of the toy dog using each of the different parameters 131, machine software application 120 may determine optimal parameters from the different parameters 131, where the optimal parameters correspond to the parameters from the different parameters 131 that give the toy dog the best quality walking motion. Finally, machine software application 120 may alter the toy dog using the optimal parameters to generate optimized character design 135.

In order to determine different parameters 131 that can be applied to character design 123 so that character design 123 can walk in a stable manner, optimization 126 utilizes different methods 127, where methods 127 include, but are not limited to, stochastic approach 128, gradient-based approach 129, and hybrid approach 130. Stochastic approach 128 generates random parameters 131 that may be utilized to alter character design 123. Gradient-Based approach 129 generates a set of poses for character design 123 and requires that character design 123 is as stable as possible using certain simulation states, which are described below. Hybrid approach 130 uses stochastic approach 128 to generate random parameters 131 for character design 123, but then utilizes gradient-based approach 129 to optimize walking stability.

Parameters 131 that may be altered on character design 123 by optimization 126 to generate optimized character design 135 include joints 132, dimensions 133, and timing 134. Joints 132 correspond to the joints that attach each of the walking mechanisms of character design 123 to the body of character design 123. For example, joints may be used to attach the legs (or walking mechanisms) of the toy dog discussed above to the body of the dog. As such, parameters 131 for joints 132 may include a location of where the joints for the walking mechanisms actually attach to the body. For example, optimization 126 may determine optimal parameters 131 for joints 132 on character design 123, where optimal parameters 131 for joints 132 specify a location for the joints that hold the walking mechanisms of character design 123 to the body of character design 123 such that character design 123 is able to walk using a balanced and stable motion.

Dimensions 133 correspond to the dimensions of the walking mechanisms of character design 123. For example, dimensions 133 for the toy dog discussed above may specify that that the legs (or walking mechanisms) of the toy dog should each be three inches vertically and two inches horizontally. As such, parameters 131 for dimensions 133 may include dimensions for the walking mechanisms of character design 123 such that character design 123 is able to walk using a balanced and stable motion.

Timing 134 may used to control the relative phase between the walking mechanisms of character design 123 by specifying the phase profile functions of the virtual actuators (or motors) that move the walking mechanisms. For example, timing 124 for the toy clog discussed above may specify different timings for the legs (or walking mechanisms) of the toy dog. In such an example, the different timings may specify the phase profile functions of the motors that move each of the legs. As such, parameters 131 for timing 134 may include the phase profile functions of the virtual actuators such that character design 123 is able to walk using a balanced and stable motion.

It should be noted that as discussed above, when changing parameters 131 for character design 123, machine software application 120 utilizes simulation 124 to determine a quality for the walking motion of character design 123 using each of the different parameters 131. To determine the quality of the walking motion, machine software application 120 may use different simulation states. The simulation states may include, but are not limited to, the distance traveled, how long the character was able to walk, the smoothness of the walking motion, the effort required by the character to walk, and how close the design is with the changed parameters to original character design 123.

The distance traveled by character design 123 includes how far character design 123 was able to travel, where a better quality character design 123 will travel further distances than a design that is of low quality. The time character design 123 was able to walk includes how long character design 123 walked while remaining upright on the walking mechanisms, where a better quality character design 123 will walk for a greater period of time than a design that is of lower quality. The smoothness of the walking motion of character design 123 includes how smooth the walking motion was, where a better quality character design 123 will walk using a smoother walking motion than a design that is of lower quality. The effort required for character design 123 to walk includes how much force is needed to both move the walking mechanisms of character design 123 and keep character design 123 in an upright position, where a better quality character design 123 will require less effort than a design that is of lower quality. Finally, a better quality optimized character design 135 will include a design that is more similar to the original character design 123 designed by user 150, than a design that is of lower quality and drastically different than the original character design 123.

For example, and using the example above where user 150 is designing a toy dog as character design 123, each time machine software application 120 changes parameters 131 for the toy dog, machine software application 120 measures the quality of the walking motion for the toy dog using the changed parameters 131. In such an example, machine software application 120 may measure how far the toy dog walked and how long the toy dog was walking during the simulation, where a better quality design for the toy dog will walk a farther distance for a greater amount of time. Machine software application 120 may further measure how smooth the walking motion of the toy dog was during the simulation, where a better quality design has a smooth walking motion. Further, machine software application 120 may measure how much effort was needed for the toy dog to walk during the simulation, where a better quality design will require less force to both walk and stay upright. Finally, machine software application 120 may measure how close the toy dog is with parameters 131 changed to the original character design 123 for the toy dog from user 150, where a better quality toy dog is as close as possible to original character design 123.

Also illustrated in FIG. 1, machine software application 120 includes character assembly 136. After generating optimized character design 135, machine software application 120 may utilize character assembly 136 in order to give user 150 instructions on how to build optimized character design 135. As such, character assembly 136 includes assembly operations 137 and assembly instructions 138. Assembly operations 137 includes a set of instructions that user 150 can follow to build optimized character design 135, where there may be more than one set of instructions. Assembly instructions 138 may be utilized by machine software application 120 to actually instruct user 150 on how to build optimized character design 135 using both illustrations and assembly plans displayed on display 112, and also audible instructions using speaker 113. For example, machine software application 120 may utilize assembly instructions 138 to audibly instruct user 150 on how to build optimized character design 135 through speakers 113, and assembly instructions may use illustrations and assembly plans to instruct user 150 how to build optimized character design 135 using display 112. In such an example, the instructions on how to build optimized character design 135 come from assembly operations 137.

It should be noted that in one implementation, user device 110 may be connected to a machine (not shown) that automatically builds optimized character design 135. For example, after machine software application 120 determines assembly operations 137 for building optimized character design 135, machine software application 120 may transmit assembly operations 137 to a machine that builds a walking machine using assembly operations 137. In such an example, the machine may be connected to user device 110 using any wired or wireless technology. For example, user device 110 may transmit assembly operations 137 to a machine using the Internet.

FIG. 2 presents an example of a user interface used to design walking machines, according to one implementation of the present disclosure. FIG. 2 includes user device 210, which includes display 212. Display 212 includes user interface 221, which includes mechanisms 222 and character design 223. Mechanisms 222 include mechanisms 260 a, mechanism 260 b, and mechanism 260 c. With regard to FIG. 2, it should be noted that user device 210, display 212, user interface 221, mechanisms 222, and character design 223 correspond respectively to user device 110, display 112, user interface 121, mechanisms 122, and character design 123 from FIG. 1.

As illustrated in FIG. 2, a user, such as user 150 from FIG. 1, has been presented with user interface 221. As discussed above, user interface 221 may be utilized by the user to design mechanical characters, such as character design 223. The user designs the mechanical characters by selecting different mechanisms and placing the selected mechanisms on the mechanical character. For example, the user may select either mechanism 260 a, mechanism 260 b, or mechanism 260 c from mechanisms 222 to place on character design 223. As illustrated in FIG. 2, the user has selected a first mechanism 260 a and placed it on the back of character design 223, and selected a second mechanism 260 a and placed it on the front of character design 223.

It should be noted that FIG. 2 only illustrates mechanisms 222 as including different walking mechanisms (or legs) for character design 223, however, the present disclosure is not limited to the implementation of FIG. 2. In one implementation, mechanisms 222 may include any of the features that make up a mechanical character. For example, in such an implementation, mechanisms 222 may include all of the features that make up character design 223, such as the head, body, tail, arms, ears, nose, or neck of character design 223. In such an example, the user would utilize user interface 221 to select and place each of the different features for character design 223.

It should further be noted that when placing mechanisms 222 on character design 223, the user is able to place each of mechanisms 222 at any location on character design 223. For example, the user may have placed each of the selected mechanisms 222 at the front of character design 223 such that character design 223 has two front legs and no back legs. Furthermore, in another example, the user may have placed the back mechanism higher up than the front mechanism. In such an example, the back legs of character design 223 would not hang as low as the front legs of character design 223.

FIG. 3 presents an example of altering the parameters of a walking machine, according to one implementation of the present disclosure. FIG. 3 includes character design 323 and optimized character design 335 a, optimized character design 335 b, and optimized character design 335 c, collectively referred to as optimized character designs 335. Character design 323 includes joint 332 a, joint 332 h, mechanism 360 a, and mechanism 360 b. Optimized character design 335 b includes joint 332 a, joint 332 b, mechanism 360 a, and mechanism 360 b. Optimized character design 335 c includes joint 332 a, joint 332 h, mechanism 360 a, mechanism 360 b, timing 340 a and timing 340 b.

With regard to FIG. 3 it should be noted that joint 332 a and joint 332 b will collectively be referred to as joints 332, mechanism 360 a and mechanism 360 b will collectively be referred to as mechanisms 360, and timing 334 a and timing 334 will collectively be referred to as timing 334. Furthermore, with respect to FIG. 3, character design 323, joints 332, timing 334, and each of optimized character designs 335 correspond respectively to character design 123, joints 132, timing 134, and optimized character design 135 from FIG. 1. Finally, character design 323 and each of mechanisms 360 correspond respectively to character design 223 and mechanism 260 a from FIG. 2.

As illustrated in FIG. 3, character design 323 includes the original character design 223 designed by the user using user interface 221 from FIG. 2. After the user is done designing character design 323, a machine software application, such as machine software application 120 from FIG. 1, may optimize character design 323 using different parameters so that character design 323 is able to walk using a stable motion. As such, the machine software application may have altered character design 323 into one of optimized character designs 335 by changing the parameters of character design 323.

Optimized character design 335 a includes the same mechanisms as character design 323, however, a location for each of the joints 332 for optimized character design 335 a has been changed as compared to character design 323. As illustrated in FIG. 3, joint 332 a and mechanism 360 a have been moved to the left on optimized character design 335 a, and joint 332 b and mechanism 360 b have been moved to the right on optimized character design 335 a. By changing a location for each of joints 332 and mechanisms 360 on character design 323 to generate optimized character design 335 a, the machine software application may have generated a more stable walking machine.

Optimized character design 335 b includes the same mechanisms as character design 323, however, dimensions for each of mechanisms 360 for optimized character design 335 b has been changed as compared to character design 323. As illustrated in FIG. 3, a dimension for each of mechanisms 360 has been changed so that each of mechanisms 360 is longer on optimized character design 335 b. By changing the dimensions for each of mechanisms 360 on character design 323 to generate optimized character design 335 b, the machine software application may have generated a more stable walking machine.

Optimized character design 335 c includes the same mechanisms as character design 323, however, optimized character design 335 c now includes timing 334 for mechanisms 360. As discussed above, a machine software application can change timing 334 parameters which are used to control the relative phase between the walking mechanisms of character design 323 by specifying the phase profile functions of the virtual actuators. For example, and using FIG. 1, machine software application 120 may change timing 134 from parameters 131 to control the relative phase between the walking mechanisms of character design 123. By changing timing 334 for mechanisms 360 on character design 323 to generate optimized character design 335 c, the machine software application may have generated a more stable walking machine.

It should be noted that the implementation of FIG. 3 only illustrated changing one parameter for each of optimized character designs 335, however, the present disclosure is not limited to the implementation of FIG. 3. In other implementations, a machine software application, such as machine software application 120 from FIG. 1, may change more than one parameter to generate an optimal character design. For example, a machine software application may change both the location of joints and the dimensions of the walking mechanisms on character design 323 to generate an optimal character design.

FIG. 4 shows a flowchart illustrating a method for optimizing walking machines, according to one implementation of the present disclosure. The approach and technique indicated by flowchart 400 are sufficient to describe at least one implementation of the present disclosure, however, other implementations of the disclosure may utilize approaches and techniques different from those shown in flowchart 400. Furthermore, while flowchart 400 is described with respect to FIG. 1, the disclosed inventive concepts are not intended to be limited by specific features shown and described with respect to FIG. 1. Furthermore, with respect to the method illustrated in FIG. 4, it is noted that certain details and features have been left out of flowchart 400 in order not to obscure the discussion of inventive features in the present application.

Referring now to flowchart 400 of FIG. 4, flowchart 400 includes displaying a user interface to a user for designing a character (410). For example, processor 111 of user device 110 may execute machine software application 120 to display user interface 121 to user 150 for designing character design 123. As discussed above, user interface 121 includes mechanisms 122 and character design 123. User 150 can thus design a character by selecting different mechanisms from mechanisms 122 and placing the selected mechanisms on character design 123.

Flowchart 400 also includes receiving the character from the user, the character including walking mechanisms (420). For example, processor 111 of user device 110 may execute machine software application 120 to receive character design 123 from user 150, where character design 123 includes walking mechanisms from mechanisms 122. As discussed above and as illustrated in FIG. 2, user 150 may select and place each mechanism (corresponding to the legs of character design 223) at any place on character design 223.

Flowchart 400 also includes determining optimal design parameters for the character based on the walking mechanisms (430). For example, processor 211 of user device 210 may execute machine software application 120 to determine optimal parameters from parameters 131 for character design 123 based on the walking mechanisms. As discussed above, machine software application 120 may utilize optimization 126 to determine different parameters 131 that can be applied to character design 123, where optimization 126 determines the different parameters 131 using methods 127. Machine software application 120 may then utilize simulation 124 to simulate a walking motion for character design 123 using each of the different parameters 131 and measure a quality for each walking motion. Finally, machine software application 120 may select the optimal parameters from parameters 131 based on the quality of the walking motions for each of the different parameters 131.

Flowchart 400 also includes altering the walking mechanisms of the character based on the optimal design parameters to generate altered walking mechanisms, wherein the optimal design parameters are for use by the character to walk using the altered walking mechanisms (440). For example, processor 111 of user device 110 may execute machine software application 120 to alter the walking mechanisms of character design 123 based on the optimal design parameters from parameters 131 to generate optimized character design 135 (which includes the altered walking mechanisms), wherein the optimal design parameters are for use by optimized character design 135 to walk.

Optionally, flowchart 400 may include generating assembly instructions for building the character using the altered walking mechanisms (450). For example, processor 111 of user device 110 may execute machine software application 120 to generate assembly operations 137 for building optimized character design 135, where optimized character design 135 includes the altered walking mechanisms. As discussed above, machine software application 120 may further use assembly instructions 138 to audibly provide user 150 with assembly operations 137 using speakers 113.

From the above description it is manifest that various techniques can be used for implementing the concepts described in the present application without departing from the scope of those concepts. Moreover, while the concepts have been described with specific reference to certain implementations, a person of ordinary skill in the art would recognize that changes can be made in form and detail without departing from the scope of those concepts. As such, the described implementations are to be considered in all respects as illustrative and not restrictive. It should also be understood that the present application is not limited to the particular implementations described above, but many rearrangements, modifications, and substitutions are possible without departing from the scope of the present disclosure. 

What is claimed is:
 1. A system comprising: a memory storing a software application; and a processor configured to execute the software application to: receive a character from a user, the character having walking mechanisms; determine optimal design parameters for the character based on the walking mechanisms; and alter the walking mechanisms of the character based on the optimal design parameters to generate altered walking mechanisms, wherein the optimal design parameters are for use by the character to walk using the altered walking mechanisms.
 2. The system of claim 1, wherein the processor is configured to determine the optimal design parameters by: determining a plurality of different design parameters for the character; and selecting the optimal design parameters from the plurality of different design parameters.
 3. The system of claim 2, wherein the processor is configured to select the optimal design parameters from the plurality of different design parameters by: simulating a walking motion of the character using each of the plurality of different design parameters; measuring a quality for the walking motion of the character for each of the plurality of different design parameters; and selecting the optimal design parameters based on the quality of the walking motion of the character for each of the plurality of different design parameters.
 4. The system of claim 1, wherein the walking mechanisms include joints and the optimal design parameters include locations for the joints on the character, and wherein generating the altered walking mechanisms includes placing the altered walking mechanisms on the character using the locations for the joints.
 5. The system of claim 1, wherein the walking mechanisms include first dimensions and the optimal design parameters include second dimensions for the walking mechanisms, and wherein generating the altered walking mechanisms includes changing the first dimensions of the walking mechanisms to the second dimensions.
 6. The system of claim 1, wherein the optimal design parameters include a timing for moving each of the walking mechanisms, and wherein generating the altered walking mechanisms includes configuring the walking mechanisms using the timing.
 7. The system of claim 1, wherein to receive the character from the user, the processor is configured to: display a user interface including a plurality of walking mechanisms to the user, wherein the user uses the user interface to select the walking mechanisms from the plurality of walking mechanisms and place the walking mechanisms on the character.
 8. The system of claim 1, wherein the processor is further configured to generate assembly instructions for building the character using the altered walking mechanisms.
 9. The system of claim 8, wherein the processor is further configured to output illustrations and assembly plans corresponding to the assembly instructions.
 10. The system of claim 1, wherein the processor is further configured to determine a plurality of different design parameters using a Stochastic approach.
 11. A method for optimizing walking mechanisms for a character, the method comprising: receiving the character from a user, the character having the walking mechanisms; determining optimal design parameters for the character based on the walking mechanisms; and altering the walking mechanisms of the character based on the optimal design parameters to generate altered walking mechanisms, wherein the optimal design parameters are for use by the character to walk using the altered walking mechanisms.
 12. The method of claim 11, wherein the method further comprises: determining a plurality of different design parameters for the character; and selecting the optimal design parameters from the plurality of different design parameters.
 13. The method of claim 12, wherein to select the optimal design parameters from the plurality of different design parameters, the method comprises: simulating a walking motion of the character using each of the plurality of different design parameters; measuring a quality for the walking motion of the character for each of the plurality of different design parameters; and selecting the optimal design parameters based on the quality of the walking motion of the character for each of the plurality of different design parameters.
 14. The method of claim 11, wherein the walking mechanisms include joints and the optimal design parameters include locations for the joints on the character, and wherein generating the altered walking mechanisms includes placing the altered walking mechanisms on the character using the locations for the joints.
 15. The method of claim 11, wherein the walking mechanisms include first dimensions and the optimal design parameters include second dimensions for the walking mechanisms, and wherein generating the altered walking mechanisms includes changing the first dimensions of the walking mechanisms to the second dimensions.
 16. The method of claim 11, wherein the optimal design parameters include a timing for moving each of the walking mechanisms, and wherein generating the altered walking mechanisms includes configuring the walking mechanisms using the timing.
 17. The method of claim 11, wherein to receive the character from the user, the method comprises: displaying a user interface including a plurality of walking mechanisms to the user, wherein the user uses the user interface to select the walking mechanisms from the plurality of walking mechanisms and place the walking mechanisms on the character.
 18. The method of claim 11, the method further comprises: generating assembly instructions for building the character using the altered walking mechanisms.
 19. The method of claim 18, wherein the method further comprises: outputting illustrations and assembly plans corresponding to the assembly instructions.
 20. The method of claim 11, the method further comprising: determining a plurality of different design parameters using a Stochastic approach. 